/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.eam.clinica.vista.controladores.consulta;

import co.edu.eam.clinica.logica.bo.BOConsulta;
import co.edu.eam.clinica.logica.bo.BOFuncionario;
import co.edu.eam.clinica.logica.bo.BOMedicamento;
import co.edu.eam.clinica.logica.bo.BOPaciente;
import co.edu.eam.persitencia.entidades.Articulo;
import co.edu.eam.persitencia.entidades.Consulta;
import co.edu.eam.persitencia.entidades.DetalleFormulaMedica;
import co.edu.eam.persitencia.entidades.Especialidad;
import co.edu.eam.persitencia.entidades.Medicamento;
import co.edu.eam.persitencia.entidades.Paciente;
import co.edu.eam.persitencia.entidades.Procedimiento;
import co.edu.eam.persitencia.entidades.Remision;
import co.edu.eam.persitencia.enumeraciones.TipoProcedimietoEnum;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Erika
 */
public class controladorConsultaClinica {

    private BOConsulta consulta;
    private List<DetalleFormulaMedica> meds;
    private BOFuncionario funcionario;
    private BOMedicamento medicamento;
    private BOPaciente paciente;
    

    public controladorConsultaClinica() {
        consulta = new BOConsulta();
        meds = new ArrayList<DetalleFormulaMedica>();
        funcionario = new BOFuncionario();
        medicamento = new BOMedicamento();
        paciente= new BOPaciente();
    }
    
    public void agregarMed(Articulo art, int cantidad,String prescripcion){
        DetalleFormulaMedica detalle= new DetalleFormulaMedica(cantidad, prescripcion, art);
        
        meds.add(detalle);
    }
    
    public void eliminarMed(long id){
        
        for (int i = 0; i < meds.size(); i++) {

            if (meds.get(i).getArticulo().getId().equals(id)) {
                 
                meds.remove(meds.get(i));
            }
        }
        
    }

    public  List<Especialidad> listarEspecialidades() throws Exception{
        return funcionario.listarEspeciaslidades();
    }

    public List<Consulta> listarProcedimientos_consulta(TipoProcedimietoEnum tipo) throws Exception {
        return consulta.listarConsulta_Procedimiento(tipo);
    }

    public List<Procedimiento> listarProcedimientos() throws Exception {
        return consulta.listarProcedimiento();
    }

    public List listarConsulta_paciente(String documento) throws Exception {
        return consulta.listarConsulta_paciente(documento);
    }

    public Consulta buscarConsulta(long id) throws Exception {
        return consulta.buscarConsulta(id);
    }

    public void crearRemision(Remision remision) throws Exception {
        consulta.crearRemision(remision);
    }

    public List<Remision> listarRemisionesEspecialidades(long id) throws Exception {
        return consulta.listarRemisionesEspecialidades(id);
    }

    public List<Consulta> listarFecha(Date fecha) throws Exception {
        return consulta.listarFecha(fecha);
    }

    public List<Medicamento> listarMedicamento() throws Exception {
        return medicamento.listarMedicamentos();
    }
    public List<DetalleFormulaMedica> listarDetalleFormulamedica() throws Exception{
        return consulta.listarDetalleFormulamedica();
    }

    public List<DetalleFormulaMedica> getMeds() {
        return meds;
    }

    public void setMeds(List<DetalleFormulaMedica> meds) {
        this.meds = meds;
    }

    public Paciente buscarPaciente(String documento) throws Exception {
        return paciente.buscarPaciente(documento);
    }
    
    public void asignarCita(Consulta consul)throws Exception{
        consulta.asignarCita(consul);
    }

}
